package com.mrt.chatgpt.data.domain.opai.annotation;

import com.mrt.chatgpt.data.domain.opai.service.rule.factory.DefaultLogicFactory;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author 86135
 * @Date 2024/3/23 11:34
 * @Description
 * @Version 1.0
 * @快捷键 getterANDsetter ALT+Insert
 * @快捷键 Ctrl+/或者Ctrl+Shift+/都可以快速注释
 * @快捷键 Ctrl+D 快速复制代码
 * @“ctrl+r”快捷键,用于当前文件内容替换,指的是在当前打开的文件中替换匹配的字符,只操作一个文件;
 * @ALT+鼠标左键 整列编辑
 * @快捷键提示 ALT+Enter
 * @快捷键 快速写注释：在方法函数上方输入/** 然后回车
 * @快捷键 Ctrl+O，选择重写的方法
 * @快捷键 ALT+INSERT
 */

/**
 *@author 86135
 * @Target({ElementType.TYPE})：
 * @Target 是一个元注解，用于指定其他注解可以应用的地方。在这里，@Target({ElementType.TYPE}) 表示该注解可以应用在类、接口（包括注解类型）或枚举声明上。
 * ElementType.TYPE 表示该注解可以应用在类、接口或枚举声明上，即被注解的目标是类本身。
 * @Retention(RetentionPolicy.RUNTIME)：
 * @Retention 用于指定注解的保留策略，即注解在什么级别可用，在源代码中、编译时还是运行时。
 * RetentionPolicy.RUNTIME 表示注解将在运行时保留，并能通过反射机制读取。这意味着这个注解可以在运行时通过反射进行访问、处理和解析。
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface LogicStrategy {

    DefaultLogicFactory.LogicModel logicMode();
}
